package br.com.geftu.dao;

import br.com.geftu.HibernateUtil.HibernateUtil;
import br.com.geftu.util.ValidaInsert;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author jorgenei
 */
public class DAO<Referencia> implements InterfaceDAO {

    private final Session sessao;
    Transaction transacao = null;
    private Referencia referencia;

    public DAO(Referencia referencia) {
        this.sessao = HibernateUtil.getSession();
        this.referencia = referencia;
    }

    public void excluir() {
        transacao = sessao.beginTransaction();
        sessao.delete(referencia);
        transacao.commit();
    }

    public void atualiza() {

    }

    public List lista_todos(String classe) {

        List lista = sessao.createQuery("from " + classe).list();
        return lista;
    }

    public void insere() {
        try {
//            JOptionPane.showMessageDialog(null, ValidaInsert.isvalid(referencia));
            transacao = sessao.beginTransaction();
            sessao.saveOrUpdate(referencia);
            transacao.commit();

        } catch (HibernateException erro) {
            JOptionPane.showMessageDialog(null, "Erro na inserção(DAO): " + erro);
            transacao.rollback();

        }

    }

}
